ποΈGitΠ―ΡΠ°ποΈ
Node / meshtastic / Meshtastic-Android / files / specs / 20260520-153412-nav-tab-labels / quickstart.md
specs/20260520-153412-nav-tab-labels/quickstart.md chore/remove-misplaced-docs-sync-workflow (1353ba25) Text, 2.34 KB
Quickstart: Nav Tab Labels Rename
Feature: Reorder Bottom Navigation Tab Labels
Date: 2026-05-20
Overview
This feature renames two T383838TopLevelDestination enum entries and their associated string resources to align with the Meshtastic cross-platform Menu Alignment Audit.
Implementation Steps (High-Level)
Step 1: Add String Resources
Add two new keys to T383838core/resources/src/commonMain/composeResources/values/strings.xml:
T282828
Tff7b72<string Te6edf3name=Ta5d6ff"connect"Tff7b72>ConnectTff7b72</string>
Tff7b72<string Te6edf3name=Ta5d6ff"messages"Tff7b72>MessagesTff7b72</string>
Then run: T383838python3 scripts/sort-strings.py
Step 2: Rename Enum Entries
In T383838core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/TopLevelDestination.kt:
β’ T383838Conversations(Res.string.conversations, ...) β T383838Messages(Res.string.messages, ...)
β’ T383838Connections(Res.string.connections, ...) β T383838Connect(Res.string.connect, ...)
Update imports accordingly.
Step 3: Update All References
Files requiring mechanical rename of T383838TopLevelDestination.Conversations β T383838.Messages and T383838.Connections β T383838.Connect:
1. T383838core/ui/.../TopLevelDestinationExt.kt β icon T383838when branches
2. T383838core/ui/.../MeshtasticNavigationSuite.kt β any explicit references
3. T383838core/navigation/.../MultiBackstack.kt β default tab reference
4. T383838core/navigation/src/commonTest/.../MultiBackstackTest.kt β test setup
5. T383838androidApp/.../Main.kt β Android entry point
6. T383838desktopApp/.../Main.kt β Desktop entry point
7. T383838desktopApp/.../DesktopNavigation.kt β Desktop nav shell
Step 4: Verify
T282828
./gradlew spotlessApply spotlessCheck detekt assembleDebug Tffa657test allTests
Key Decisions
ββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β Decision β Rationale β
ββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββ€
β New string keys (not reusing old) β Old keys used as screen titles elsewhere β
β Enum entry rename (not just label) β Code clarity + spec requirement β
β No route changes β Preserves deep links & state restoration β
β No localization changes β Deferred to Crowdin sync cycle β
ββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββ
Risks & Mitigations
βββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Risk β Mitigation β
βββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Missed reference causes compile error β IDE rename refactoring + full T383838allTests build β
β Ordinal shift breaks MultiBackstack β Entries stay in same position β order unchanged β
β Localized users see English fallback β Expected behavior for new keys until Crowdin sync β
βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββ
Served by rngit 1.5.0 - Generated in 0.04s